范围函数和操作符

最近更新时间: 2025-02-18 16:02:00

范围操作符

范围类型可用的操作符:

操作符描述
=等于
<> 不等于
< 小于
> 大于
<=小于等于
>=大于等于
@>包含范围/元素
<@范围/元素被包含
&&重叠
<< 严格左部
>> 严格右部
&<不超过右部
&>不超过左部
-\|-相邻
+
*
-

示例:

postgres=# SELECT int4range(1,5) = '[1,4]'::int4range;
?column? 
----------
t
(1 row)

postgres=# SELECT numrange(1.1,2.2) <> numrange(1.1,2.3);
?column? 
----------
t
(1 row)

postgres=# SELECT int4range(2,4) @> int4range(2,3);
?column? 
----------
t
(1 row) 
postgres=# SELECT numrange(5,15) + numrange(10,20);
?column? 
----------
[5,20)
(1 row)
postgres=# SELECT int8range(5,15) * int8range(10,20);
?column? 
----------
[10,15)
(1 row)

范围函数

函数返回类型描述
lower(anyrange)范围的元素类型范围的下界
upper(anyrange)范围的元素类型范围的上界
isempty(anyrange)bool范围是否为空
lower_inc(anyrange)bool下界是否包含在内
upper_inc(anyrange)bool上界是否包含在内
lower_inf(anyrange)bool下界是否无限
upper_inf(anyrange)bool上界是否无限
range_merge(anyrange, anyrange)anyrange最小范围其中包含两个给定范围

示例:

postgres=# SELECT lower(numrange(1.1,2.2));
lower 
-------
 1.1
(1 row) 
postgres=# SELECT upper(numrange(1.1,2.2));
upper 
-------
 2.2
(1 row) 
postgres=# SELECT isempty(numrange(1.1,2.2));
isempty 
---------
f
(1 row)
postgres=# SELECT lower_inc(numrange(1.1,2.2));
lower_inc 
-----------
t
(1 row) 
postgres=# SELECT lower_inf('(,)'::daterange);
lower_inf 
-----------
t
(1 row)
postgres=# SELECT range_merge('[1,2)'::int4range, '[3,4)'::int4range);
range_merge 
-------------
[1,4)
(1 row)